﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Kokomo.PeInspector.Reflection
{
	/// <summary>
	/// Specifies keys for images used to represent types and members.
	/// </summary>
	public static class MetadataIconKeys
	{
		/// <summary>
		/// Namespace
		/// </summary>
		public static readonly string Namespace = "Namespace";
		/// <summary>
		/// Assembly
		/// </summary>
		public static readonly string Assembly = "assembly";
		/// <summary>
		/// Class
		/// </summary>
		public static readonly string Class = "class";
		/// <summary>
		/// Nested private class
		/// </summary>
		public static readonly string PrivateClass = "class_private";
		/// <summary>
		/// Nested protected class
		/// </summary>
		public static readonly string FamilyClass = "class_family";
		/// <summary>
		/// Nested internal or non-visible class
		/// </summary>
		public static readonly string AssemblyClass = "class_assembly";
		/// <summary>
		/// Interface
		/// </summary>
		public static readonly string Interface = "interface";
		/// <summary>
		/// Nested privace interface
		/// </summary>
		public static readonly string PrivateInterface = "interface_private";
		/// <summary>
		/// Nested protected interface
		/// </summary>
		public static readonly string FamilyInterface = "interface_family";
		/// <summary>
		/// Nested internal or non-visible interface
		/// </summary>
		public static readonly string AssemblyInterface = "interface_assembly";
		/// <summary>
		/// Enumeration
		/// </summary>
		public static readonly string Enum = "enum";
		/// <summary>
		/// Nested private enumeration
		/// </summary>
		public static readonly string PrivateEnum = "enum_private";
		/// <summary>
		/// Nested protected enumeration
		/// </summary>
		public static readonly string FamilyEnum = "enum_family";
		/// <summary>
		/// Nested internal or non-visible enumeration
		/// </summary>
		public static readonly string AssemblyEnum = "enum_assembly";
		/// <summary>
		/// Structure
		/// </summary>
		public static readonly string Struct = "struct";
		/// <summary>
		/// Nested private structure
		/// </summary>
		public static readonly string PrivateStruct = "struct_private";
		/// <summary>
		/// Nested protected structure
		/// </summary>
		public static readonly string FamilyStruct = "struct_family";
		/// <summary>
		/// Nested internal or non-visible assembly
		/// </summary>
		public static readonly string AssemblyStruct = "struct_assembly";
		/// <summary>
		/// Delegate
		/// </summary>
		public static readonly string Delegate = "delegate";
		/// <summary>
		/// Nested private delegate
		/// </summary>
		public static readonly string PrivateDelegate = "delegate";
		/// <summary>
		/// Nested protected delegate
		/// </summary>
		public static readonly string FamilyDelegate = "delegate_family";
		/// <summary>
		/// Nested internal or non-visible delegate
		/// </summary>
		public static readonly string AssemblyDelegate = "delegate_assembly";
		/// <summary>
		/// Method
		/// </summary>
		public static readonly string Method = "method";
		/// <summary>
		/// Private method
		/// </summary>
		public static readonly string PrivateMethod = "method_private";
		/// <summary>
		/// Protected method
		/// </summary>
		public static readonly string FamilyMethod = "method_family";
		/// <summary>
		/// Internal method
		/// </summary>
		public static readonly string AssemblyMethod = "method_assembly";
		/// <summary>
		/// Event
		/// </summary>
		public static readonly string Event = "event";
		/// <summary>
		/// Private event
		/// </summary>
		public static readonly string PrivateEvent = "event_private";
		/// <summary>
		/// Protected event
		/// </summary>
		public static readonly string FamilyEvent = "event_family";
		/// <summary>
		/// Internal event
		/// </summary>
		public static readonly string AssemblyEvent = "event_assembly";
		/// <summary>
		/// Field
		/// </summary>
		public static readonly string Field = "field";
		/// <summary>
		/// Private field
		/// </summary>
		public static readonly string PrivateField = "field_private";
		/// <summary>
		/// Protected field
		/// </summary>
		public static readonly string FamilyField = "field_family";
		/// <summary>
		/// Internal field
		/// </summary>
		public static readonly string AssemblyField = "field_assembly";
		/// <summary>
		/// Property
		/// </summary>
		public static readonly string Property = "property";
		/// <summary>
		/// Private property (no trespassing)
		/// </summary>
		public static readonly string PrivateProperty = "property_private";
		/// <summary>
		/// Protected property
		/// </summary>
		public static readonly string FamilyProperty = "property_family";
		/// <summary>
		/// Internal property
		/// </summary>
		public static readonly string AssemblyProperty = "property_assembly";
	}
}
